도구 스키마

Anthropic
Claude에서 열기
이 강좌에 대해 질문하기
노트 복사
LLM용 전체 강좌 노트 복사

도구 함수를 작성한 후, 다음 단계는 함수가 어떤 인수를 기대하고 어떻게 사용해야 하는지 Claude에게 알려주는 JSON 스키마를 만드는 것입니다. 이 스키마는 Claude가 도구를 언제, 어떻게 호출할지 이해하기 위해 읽는 문서 역할을 합니다.

JSON 스키마 이해하기

JSON 스키마는 AI나 도구 호출에만 특정된 것이 아닙니다. 수년간 사용되어 온 널리 사용되는 데이터 유효성 검사 사양입니다. AI 커뮤니티에서 채택한 이유는 함수 매개변수를 설명하고 데이터를 검증하는 데 편리한 방법이기 때문입니다.

완전한 도구 명세는 세 가지 주요 부분으로 구성됩니다:

  • name - 도구에 대한 명확하고 설명적인 이름 (예: "get_weather")
  • description - 도구가 하는 일, 언제 사용해야 하는지, 무엇을 반환하는지
  • input_schema - 함수의 인수를 설명하는 실제 JSON 스키마

효과적인 설명 작성하기

도구 설명은 Claude가 함수를 언제 사용할지 이해하는 데 매우 중요합니다. 권장 사항은 다음과 같습니다:

  • 도구가 하는 일을 설명하는 3-4개의 문장을 목표로 하세요
  • Claude가 언제 사용해야 하는지 설명하세요
  • 어떤 종류의 데이터를 반환하는지 설명하세요
  • 각 인수에 대한 상세한 설명을 제공하세요

스키마를 쉽게 생성하는 방법

JSON 스키마를 처음부터 작성하는 대신, Claude 자체를 사용하여 생성할 수 있습니다. 다음은 그 과정입니다:

  1. 도구 함수 코드를 복사하세요
  2. Claude에 가서 도구 호출을 위한 JSON 스키마를 작성해달라고 요청하세요
  3. 도구 사용에 관한 Anthropic 문서를 컨텍스트로 포함하세요
  4. Claude가 권장 사항에 따라 올바르게 형식화된 스키마를 생성하도록 하세요

프롬프트는 다음과 같아야 합니다: "이 함수의 도구 호출 목적으로 유효한 JSON 스키마 명세를 작성해 주세요. 첨부된 문서에 나열된 권장 사항을 따르세요."

코드에 스키마 구현하기

Claude가 스키마를 생성하면, 코드 파일에 복사하세요. 다음은 따르기 좋은 명명 패턴입니다:

def get_current_datetime(date_format="%Y-%m-%d %H:%M:%S"):
    if not date_format:
        raise ValueError("date_format cannot be empty")
    return datetime.now().strftime(date_format)

get_current_datetime_schema = {
    "name": "get_current_datetime",
    "description": "Returns the current date and time formatted according to the specified format",
    "input_schema": {
        "type": "object",
        "properties": {
            "date_format": {
                "type": "string",
                "description": "A string specifying the format of the returned datetime. Uses Python's strftime format codes.",
                "default": "%Y-%m-%d %H:%M:%S"
            }
        },
        "required": []
    }
}

스키마를 정리하고 해당 함수와 쉽게 매칭할 수 있도록 function_name 뒤에 function_name_schema를 붙이는 패턴을 사용하세요.

타입 안전성 추가하기

더 나은 타입 검사를 위해 Anthropic 라이브러리에서 ToolParam 타입을 가져와 사용하세요:

from anthropic.types import ToolParam

get_current_datetime_schema = ToolParam({
    "name": "get_current_datetime",
    "description": "Returns the current date and time formatted according to the specified format",
    # ... rest of schema
})

기능에 엄격하게 필요한 것은 아니지만, 이렇게 하면 Claude의 API와 함께 스키마를 사용할 때 타입 오류를 방지하고 코드를 더 견고하게 만들 수 있습니다.